perm filename DLIST.DFT[VLI,LSP] blob sn#381976 filedate 1978-09-08 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00004 ENDMK
CāŠ—;

newparent  `PROPT` ;;

newparent  `EQUT` ;;

newparent  `FIXT` ;;

newtypes [ ``dlist = . + dpair`` ;
           ``dpair = d # dlist`` ] ;;

newconstant ( `HD` , ":dlist->d" ) ;;

newconstant ( `TL` , ":dlist->dlist" ) ;;

newconstant ( `CONS` , ":d->(dlist->dlist)" ) ;;

newconstant ( `NIL` , ":dlist" ) ;;

newconstant ( `dummy` , ":d" ) ;;

newconstant ( `LIST` , ":d->dlist" ) ;;

NEWAXIOMS();;

AXHD  "HD == \dl:dlist.FST(OUTR dl :dpair) :d"

AXTL  "TL == \dl:dlist.SND(OUTR dl :dpair) :dlist"

AXNIL  "NIL == INL () :dlist"

AXCONS  "CONS == \d:d.\dl:dlist.INR(d,dl) :dlist"

AXNIL2  "EQ NIL NIL == TT"

AXLIST  "LIST == \d:d.INR(d, NIL) :dlist"

NNCNS1  "!d:d. !s:dlist. EQ s NIL == FF IMP EQ(CONS d s) NIL == FF"

NNCNS2  "!d:d. !s:dlist. EQ s NIL == TT IMP EQ(CONS d s)NIL == FF"

% the last two should actually be proved as facts by contradiction %